#include <iostream>   // 用于输入输出
#include <vector>     // 表示数组
#include <algorithm>  // C++标准库中的标准算法

// 在这里实现算法

// [3, 5, -4, 8, 11, 1, -1, 6]
// target: 10
// [11, -1]

using namespace std;

// 返回值 函数的名字(参数1的类型 参数1的名字, ...) {}
// [-4, -1, 1, 3, 5, 6, 8, 11]
// [-4,                    11]
// [    -1                 11]
// [    -1              8    ]
vector<int> twoNumberSum(vector<int> array, int targetNum) {
  sort(array.begin(), array.end());
  
  auto l = array.begin();
  auto r = array.end() - 1;

  while (l != r) {
    auto sum = *l + *r;

    if (sum == targetNum) { 
      return {*l, *r};
    }
    else if (sum < targetNum) {
      ++l;
    }
    else {
      --r;
    }
  }

  return {};
}

int main(int argc, char const *argv[])
{
  // 调用算法
  vector<int> array {3, 5, -4, 8, 11, 1, -1, 6};
  auto arr = twoNumberSum(array, 10); // vector<vector<int>>

  for (int v : arr) {
    cout<<v<<" ";
  }

  cout<<endl;
  return 0;
}

